package com.ccc.scala.base5_function

object Function2_methodAndFunction {
  def main(args: Array[String]): Unit = {
    // 函数与方法
    // scala 方法是类的一部分，而函数是一个对象，可以赋值给一个变量。
    // 换句话来说在类中定义的函数即是方法
    def test(): Unit = {
      println("test function...")
    }

    // 函数没有重载和重写的概念，但是函数可以嵌套声明使用，方法就没有这个能力了
    // def test(name :String) {} // ERROR
    def test2(): Unit = {
      def test3(): Unit = {
      }

      test3()
    }

    // 同名情况下 这里使用test() 调用的是函数
    test() // test function...

    // 这里调用的是 方法
    Function2_methodAndFunction.test() // test method...


    // 函数的本质：
    // 实际上函数编译之后也是一个新的方法，只是用private static final修饰的

  }

  def test(): Unit = {
    println("test method...")
  }

}
